package com.bottomlord.inject;

import java.util.Set;

/**
 * @author ChenYue
 * @date 2021/4/8 10:57
 */
public interface ComponentRepository {
    /**
     * 通过名称查找组件对象
     * @param componentName 组件名称
     * @param <C> 组件对象类型
     * @return 组件对象，如果找不到，返回<code>null<code/>
     */
    <C> C getComponent(String componentName);

    /**
     * 获取所有组件名称
     * @return 所有组件名称的set集合
     */
    Set<String> getComponentNames();
}
